//: [Previous](@previous)

/*:
 
 * 可选类型比 Objective-C 中的 nil 指针更加安全也更具表现力，它是 Swift 许多强大特性的重要组成部分。
 
 * Swift 是一门类型安全的语言，这意味着 Swift 可以让你清楚地知道值的类型。
 
 * 常量和变量必须在使用前声明，用 let 来声明常量，用 var 来声明变量。
 
 * 当你声明常量或者变量的时候可以加上类型注解（type annotation），说明常量或者变量中要存储的值的类型。
 
 * 一般来说你很少需要写类型注解。如果你在声明常量或者变量的时候赋了一个初始值，Swift 可以推断出这个常量或者变量的类型
 
 * Swift 用字符串插值（string interpolation）的方式把常量名或者变量名当做占位符加入到长字符串中，Swift 会用当前常量或变量的值替换这些占位符。将常量或变量名放入圆括号中，并在开括号前使用反斜杠将其转义：
 * 与其他大部分编程语言不同，Swift 并不强制要求你在每条语句的结尾处使用分号（;）
 
 * 尽量不要使用 UInt，除非你真的需要存储一个和当前平台原生字长相同的无符号整数。除了这种情况，最好使用 Int，即使你要存储的值已知是非负的。统一使用 Int 可以提高代码的可复用性，避免不同类型数字之间的转换，并且匹配数字的类型推断，
 
 * 因为有类型推断，和 C 或者 Objective-C 比起来 Swift 很少需要声明类型。常量和变量虽然需要明确类型，但是大部分工作并不需要你自己来完成。
 
 * 整数和浮点数的转换必须显式指定类型
 
 * 类型别名（type aliases）就是给现有类型定义另一个名字。你可以使用 typealias 关键字来定义类型别名。
 
 */

import Foundation

let three = 3
let pointOneFourOneFiveNine = 0.14159
let pi = Double(three) + pointOneFourOneFiveNine
// pi 等于 3.14159，所以被推测为 Double 类型

/*:
 #### 元组
 
 * 元组（tuples）把多个值组合成一个复合值。元组内的值可以是任意类型，并不要求是相同类型。
 
 * 你可以将一个元组的内容分解（decompose）成单独的常量和变量，然后你就可以正常使用它们了：
 
 * 当遇到一些相关值的简单分组时，元组是很有用的。
 
 * 元组不适合用来创建复杂的数据结构。如果你的数据结构比较复杂，不要使用元组，用类或结构体去建模。
 
 */

let http404Error = (404, "Not Found")
// http404Error 的类型是 (Int, String)，值是 (404, "Not Found")
let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
// 输出“The status code is 404”
print("The status message is \(statusMessage)")
// 输出“The status message is Not Found”

/*:
 #### 可选类型
 
 * 使用可选类型（optionals）来处理值可能缺失的情况。
 
 * 你可以使用 if 语句和 nil 比较来判断一个可选值是否包含值。
 
 * 使用可选绑定（optional binding）来判断可选类型是否包含值，如果包含就把值赋给一个临时常量或者变量
 
 */

//: [Next](@next)
